<?php 
	$urlCurso			=	constant('PARAMETRO_1');
	$cursoVisualizado	=	new Curso(null, $urlCurso);
	$idUsuario          = $this->getUsuario() == null ? null : $this->getUsuario()->getIdUsuario();
	$idCurso = $cursoVisualizado->getIdCurso();	
	$tipoUsuario = $this->getUsuario()->getTipoCadastro();
	$permissaoBibliografia = new Permissao($idCurso, 'bibliografia', $tipoUsuario);
	
	if (defined('PARAMETRO_2')) {
		$moduloVisualizado		=	null;
		$bibliografia			=	null;
		$localAcao	=	constant('PARAMETRO_2');
		if(defined('PARAMETRO_4') && constant('PARAMETRO_4') == 'alterarPermissoes'){
			if($permissaoBibliografia->checkPermissao('Alterar',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
				require('gerencia/permissoes.php');
			}else{
				redireciona(array('curso', $urlCurso, constant('PARAMETRO_2'), constant('PARAMETRO_3')));
			}			
		}
		if ($localAcao == 'consulta' && defined('PARAMETRO_3') && constant('PARAMETRO_3') == 'bibliografia') {
			$localAcao	=	constant('PARAMETRO_3');
			$objetivoPagina	=	(defined('PARAMETRO_4') && (constant('PARAMETRO_4') == 'inserir' || is_numeric(constant('PARAMETRO_4')))) ? constant('PARAMETRO_4') : 'listar';
			if ($objetivoPagina == 'listar') {
				$ordenacaoAtual		=	defined('PARAMETRO_4') ? str_replace('ordena', '', constant('PARAMETRO_4')) : 'item';
				$ordenacaoAtual	= str_replace('ordena', '', $ordenacaoAtual);
				if($ordenacaoAtual == 'datamodificacao')
					$ordenacaoAtual = 'dataHoraUltimaModificacao';
				if($ordenacaoAtual == 'datainsercao')
					$ordenacaoAtual = 'dataHoraInsercao';
				$ordemAtual			=	defined('PARAMETRO_5') ? constant('PARAMETRO_5') : 'asc';
			}
			if (is_numeric($objetivoPagina)) {
				$idBibliografia	=	$objetivoPagina;
				$bibliografia	=	new Bibliografia($idBibliografia);
				if ($bibliografia->getIdBibliografia() == null)
					redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia'));
				$objetivoPagina	=	defined('PARAMETRO_5') ? constant('PARAMETRO_5') : '';
			}
				
		}
		else {
			if ($localAcao == 'modulo') {
				$idModulo			=	defined('PARAMETRO_3') ? constant('PARAMETRO_3') : null;
				$moduloVisualizado	=	new Modulo($idModulo);
				if ($moduloVisualizado->getIdModulo() == null) {
					redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo'));
				}
				if (defined('PARAMETRO_4') && constant('PARAMETRO_4') == 'bibliografia') {
					$objetivoPagina	=	(defined('PARAMETRO_5') && (constant('PARAMETRO_5') == 'inserir' || is_numeric(constant('PARAMETRO_5')))) ? constant('PARAMETRO_5') : 'listar';
					if ($objetivoPagina == 'listar') {
						$ordenacaoAtual		=	defined('PARAMETRO_5') ? str_replace('ordena', '', constant('PARAMETRO_5')) : 'item';
						$ordenacaoAtual	= str_replace('ordena', '', $ordenacaoAtual);
						if($ordenacaoAtual == 'datamodificacao')
							$ordenacaoAtual = 'dataHoraUltimaModificacao';
						if($ordenacaoAtual == 'datainsercao')
							$ordenacaoAtual = 'dataHoraInsercao';
						$ordemAtual			=	defined('PARAMETRO_6') ? constant('PARAMETRO_6') : 'asc';
					}
					if (is_numeric($objetivoPagina)) {
						$idBibliografia	=	$objetivoPagina;
						$bibliografia	=	new Bibliografia($idBibliografia);
						if ($bibliografia->getIdBibliografia() == null)
							redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia'));
						$objetivoPagina	=	defined('PARAMETRO_6') ? constant('PARAMETRO_6') : '';
					}
				}
				else 
					redireciona(array('404'));
				
			}
			else {
				redireciona(array('404'));
			}
		}
		
		if($cursoVisualizado->permissaoAcesso($idUsuario,'bibliografia')){
			if($_POST){
				//Insere ou edita bibliografia no BD
				if(isset($_POST['btnSalvar'])) {
					if($objetivoPagina == 'inserir' || $objetivoPagina == 'editar') {
						$strItem = pegaPost('strItem');	
						
						if($objetivoPagina == 'inserir') {
							if(!$permissaoBibliografia->checkPermissao('Inserir',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
								redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia'));
							}
							$arrayItens	=	preg_split('/(\r\n|\n\r)/', $strItem);
							$erro = false;
							$itensErro	=	"";
							foreach ($arrayItens as $strItem) {
								if($idBibliografia	=	Bibliografia::inserir($cursoVisualizado->getIdCurso(), $idUsuario, $strItem)) {
									if (is_numeric($idBibliografia)) {
										if ($localAcao == 'modulo'){
											$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idBibliografia, 'bibliografias', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
											$objAssociacoes->criarAssociacao($moduloVisualizado->getIdModulo(), $cursoVisualizado->getNomeModulo(), $idUsuario);
										}
										foreach ($_POST as $chave => $post) {
											if (preg_match('/^strAssociacao[0-9]+$/', $chave) && $post != '--') {
												//Uma Associacao foi feita
												//conseguiu pegar o id da bibliografia que acabou de inserir
												$matches	=	array();
												
												if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
													$categoriaItemAssociacao	=	$matches[1];
													$idItemAssociacao			=	$matches[2];
													
													$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idBibliografia, 'bibliografias', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
													$objAssociacoes->criarAssociacao($idItemAssociacao, $categoriaItemAssociacao, $idUsuario);
												}
											}
										}
									}
									else {
										//Nao conseguiu pegar o id da bibliografia que acabou de inserir (necessario para criar associcao)
										adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
									}
									
									$linkItem	=	preg_replace('/\/$/', '', getUrlCompleta()) . montaLink(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia', $idBibliografia));
									$cursoVisualizado->enviaEmailParticipantes($this->getUsuario()->getIdUsuario(), textoEmail('EMAIL_ASSUNTO_NOVA_BIBLIOGRAFIA'), textoEmail('EMAIL_TITULO_NOVA_BIBLIOGRAFIA'), textoEmail('EMAIL_NOVA_BIBLIOGRAFIA', array($cursoVisualizado->getNome(), $linkItem)));
								}
								else {
									$erro		=	true;
									$itensErro	.=	$strItem . '\n';
								}
							}
	
							if ($erro) {
								if ($localAcao == 'modulo')
									$listaAssociacoes	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo());
								if ($localAcao == 'bibliografia')
									$listaAssociacoes	=	array();
	
								foreach ($_POST as $chave => $post) {
									$matches			=	array();
									if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
										array_push($listaAssociacoes, $matches[1] . '||' . $matches[2]);
									}
								}
								array_push($listaAssociacoes, '--');
	
								$_SESSION['constructore']['inserirBibliografia']['strItem'] = stripslashes($itensErro);
								$_SESSION['constructore']['inserirBibliografia']['listaAssociacoes']	=	$listaAssociacoes;
								if ($localAcao == 'modulo')
									redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia', 'inserir'));
								if ($localAcao == 'bibliografia')
									redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia', 'inserir'));
							}
							else {
								if ($localAcao == 'modulo')
									redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia'));
								if ($localAcao == 'bibliografia')
									redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia'));
							}
						}
						else {
							if($objetivoPagina == 'editar' && $bibliografia != null && $bibliografia->getIdBibliografia() != null) {
								if(!$permissaoBibliografia->checkPermissao('Editar',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
									redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia'));
								}
								
								$idBibliografia	=	$bibliografia->getIdBibliografia();
								if(Bibliografia::editar($idBibliografia, $idUsuario, $strItem)) {
									if (is_numeric($idBibliografia)) {
										//conseguiu pegar o id da bibliografia que acabou de inserir
										if (Associacoes::excluirAssociacao($cursoVisualizado->getIdCurso(), 'bibliografias', $idBibliografia)) {
											if ($localAcao == 'modulo'){
												$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idBibliografia, 'bibliografias', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
												$objAssociacoes->criarAssociacao($moduloVisualizado->getIdModulo(), $cursoVisualizado->getNomeModulo(), $idUsuario);
											}
											foreach ($_POST as $chave => $post) {
												if (preg_match('/^strAssociacao[0-9]+$/', $chave) && $post != '--') {
													//Uma Associacao foi feita
													
													$matches	=	array();
													
													if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
														$categoriaItemAssociacao	=	$matches[1];
														$idItemAssociacao			=	$matches[2];
														
														$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idBibliografia, 'bibliografias', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
														$objAssociacoes->criarAssociacao($idItemAssociacao, $categoriaItemAssociacao, $idUsuario);
													}
												}
											}
										}
										else {
											//Nao conseguiu pegar o id da bibliografia que acabou de inserir (necessario para criar associcao)
											adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
										}
									}
									else {
										//Nao conseguiu pegar o id da bibliografia que acabou de inserir (necessario para criar associcao)
										adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
									}
									if ($localAcao == 'modulo')
										redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia'));
									if ($localAcao == 'bibliografia')
										redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia'));	
								}
								else {
									if ($localAcao == 'modulo')
										$listaAssociacoes	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo());
									if ($localAcao == 'bibliografia')
										$listaAssociacoes	=	array();
		
									foreach ($_POST as $chave => $post) {
										$matches			=	array();
										if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
											array_push($listaAssociacoes, $matches[1] . '||' . $matches[2]);
										}
									}
									array_push($listaAssociacoes, '--');
		
									$_SESSION['constructore']['inserirBibliografia']['strItem'] = stripslashes($itensErro);
									$_SESSION['constructore']['inserirBibliografia']['listaAssociacoes']	=	$listaAssociacoes;
									if ($localAcao == 'modulo')
										redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia', $idBibliografia, 'editar'));
									if ($localAcao == 'bibliografia')
										redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia', $idBibliografia, 'editar'));
								}
							}
							else {
								//Acao Invalida
								redireciona(array('404'));
							}
						}
					}
					else {
						//Acao invalida
						redireciona(array('404'));
					}
				}
				
				if(isset($_POST['btnInserir'])) {
					if ($localAcao == 'bibliografia')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia', 'inserir'));
					if ($localAcao == 'modulo')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia', 'inserir'));
				}
				
				if(isset($_POST['btnCancelar'])) {
					if ($localAcao == 'bibliografia')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia'));
					if ($localAcao == 'modulo')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia'));
				}
				
				if(isset($_POST['btnExcluir'])) {
					$arrayIds	=	array();
					foreach($_POST as $chave => $post) {
						if(preg_match('/^checkBibliografia[0-9]+$/', $chave) && $post != ""){
							array_push($arrayIds, str_replace('checkBibliografia', '', $chave));
						}
					}
					if ($localAcao == 'bibliografia') {
						$erro	=	false;
						foreach($arrayIds as $id) {
							if (!Bibliografia::apagar($id))
								$erro	=	true;
						}
						if (!$erro) adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia'));
					}
					if ($localAcao == 'modulo') {
						$erro	=	false;
						foreach($arrayIds AS $id) {
							if(!Associacoes::excluirAssociacao($cursoVisualizado->getIdCurso(), 'bibliografias', $id, $cursoVisualizado->getNomeModulo(), $moduloVisualizado->getIdModulo(), $cursoVisualizado->getNomeModulo()))
								$erro	=	true;
						}
						if (!$erro)
							adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
						else
							adicionaMensagem(texto('MENSAGEM_ERRO_APAGAR_ITEM'), 'erro');
						redireciona(array('curso', $urlCurso,'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia'));
					}
				}
				
				if (isset($_POST['btnExcluirAssociacao'])) {
					$associacao	=	explode('||', pegaPost('btnExcluirAssociacao'));
					if (is_numeric($idBibliografia)) {
						if(Associacoes::excluirAssociacao($cursoVisualizado->getIdCurso(), 'bibliografias', $idBibliografia, $associacao[0], $associacao[1], $cursoVisualizado->getNomeModulo()))
							adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
						else
							adicionaMensagem(texto('MENSAGEM_ERRO_APAGAR_ITEM'), 'erro');
						if ($localAcao == 'bibliografia')
							redireciona(array('curso', $urlCurso, 'consulta', 'bibliografia', $idBibliografia, 'editar'));
						if ($localAcao == 'modulo')
							redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia', $idBibliografia, 'editar'));
					}
					else {
						redireciona(array('404'));
					}
				}
				
			}
			else {
				//Passando o Local da visualizacao para o template
				$this->getSmarty()->assign('localAcao', $localAcao);
				$this->getSmarty()->assign_by_ref('curso', $cursoVisualizado);
				if ($localAcao == 'modulo') {
					$this->getSmarty()->assign_by_ref('modulo', $moduloVisualizado);
					$this->getSmarty()->assign('arrayMenuModulo', $moduloVisualizado->configuraMenu($cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo()));
				}
				//Para exibir o formulario de insercao da bibliografia
				if ($objetivoPagina == 'inserir') {
					$this->getSmarty()->assign('inserir', true);
					$this->getSmarty()->assign('LEGEND_INSERIR_BIBLIOGRAFIA', texto('LEGEND_INSERIR_BIBLIOGRAFIA'));
					$this->getSmarty()->assign('arrayItensInseridos', $cursoVisualizado->getItensInseridos());
					$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', $localAcao == 'modulo' ? array(texto('TEXTO_INSERIR_DADO', array(texto('DADOS_ITEM'))) . ' - ' . texto('AREA_BIBLIOGRAFIA') . ' - ' .  limitaTexto($moduloVisualizado->getTitulo()) . ' - '. $cursoVisualizado->getNomeModulo() . ' - ' . limitaTexto($cursoVisualizado->getNome())) : array(texto('TEXTO_INSERIR_DADO', array(texto('DADOS_ITEM'))) . ' - ' . texto('AREA_BIBLIOGRAFIA') . ' - ' . limitaTexto($cursoVisualizado->getNome()))));
					$this->getSmarty()->assign('TEXTO_NAVEGACAO', $localAcao == 'modulo'? limitaTexto($cursoVisualizado->getNome()) . ' > ' . $cursoVisualizado->getNomeModulo() . ' > '. limitaTexto($moduloVisualizado->getTitulo()) . ' > ' . texto('AREA_BIBLIOGRAFIA') . ' > ' . texto('TEXTO_INSERIR_DADO', array(texto('DADOS_ITEM'))) : limitaTexto($cursoVisualizado->getNome()) . ' > ' . texto('AREA_BIBLIOGRAFIA') . ' > ' . texto('TEXTO_INSERIR_DADO', array(texto('DADOS_ITEM'))));
							
					if (!isset($_SESSION['constructore']['inserirBibliografia']['listaAssociacoes'])) {
						if ($localAcao == 'bibliografia')
							$_SESSION['constructore']['inserirBibliografia']['listaAssociacoes']	=	array('--');
						if ($localAcao == 'modulo')
							$_SESSION['constructore']['inserirBibliografia']['listaAssociacoes']	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo(), '--');
					}
				}
				else {
					if ($objetivoPagina == 'editar' || $objetivoPagina == 'ver') {
						//Visualizar um item
						
						if ($objetivoPagina == 'editar') {
							if(!$permissaoBibliografia->checkPermissao('Editar',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
								redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia'));
							}
							if(is_array($resultado = Bibliografia::buscar($bibliografia->getIdBibliografia(), $cursoVisualizado->getIdCurso(), null, null, null, null, null, null, null, null, null))) {
								$bibliografia = $resultado['listaResultados'][0];
			
								$_SESSION['constructore']['inserirBibliografia']['strItem']			=	$bibliografia['titulo'];
								$_SESSION['constructore']['inserirBibliografia']['idBibliografia']	=	$bibliografia['idItem'];
								
								if ($localAcao == 'bibliografia')
									$listaAssociacoes	=	array();
								if ($localAcao == 'modulo')
									$listaAssociacoes	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo());
										
								//Pegando e ajeitando associacoes
								$associacoesBibliografia	=	new Associacoes($cursoVisualizado->getIdCurso(), $bibliografia['idItem'], 'bibliografias', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
								$arrayAssociacoes	=	$associacoesBibliografia->getAssociacoes();
								foreach ($arrayAssociacoes as $grupoAssociacoes => $associacoesGrupo) {
									foreach ($associacoesGrupo as $chaveAssociacao => $dadosAssociacao) {
										$associacao	=	$grupoAssociacoes . "||" . $dadosAssociacao['idElemento'];
										if ($moduloVisualizado == null || ($moduloVisualizado != null && $moduloVisualizado->getIdModulo() != null && $associacao != $cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo()))
											array_push($listaAssociacoes, $associacao);
									}
								}
								array_push($listaAssociacoes, '--');
								$_SESSION['constructore']['inserirBibliografia']['listaAssociacoes']	=	$listaAssociacoes;
								
								$this->getSmarty()->assign('arrayItensInseridos', $cursoVisualizado->getItensInseridos());
								$this->getSmarty()->assign('editar', true);
								
								$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', $localAcao == 'modulo' ? array(texto('TEXTO_EDITAR_DADO', array(texto('DADOS_ITEM'))) . ' - ' . texto('AREA_BIBLIOGRAFIA') . ' - ' .  limitaTexto($moduloVisualizado->getTitulo()) . ' - '. $cursoVisualizado->getNomeModulo() . ' - ' . limitaTexto($cursoVisualizado->getNome())) : array(texto('TEXTO_EDITAR_DADO', array(texto('DADOS_ITEM'))) . ' - ' . texto('AREA_BIBLIOGRAFIA') . ' - ' . limitaTexto($cursoVisualizado->getNome()))));
								$this->getSmarty()->assign('TEXTO_NAVEGACAO', $localAcao == 'modulo'? limitaTexto($cursoVisualizado->getNome()) . ' > ' . $cursoVisualizado->getNomeModulo() . ' > '. limitaTexto($moduloVisualizado->getTitulo()) . ' > ' . texto('AREA_BIBLIOGRAFIA') . ' > ' . texto('TEXTO_EDITAR_DADO', array(texto('DADOS_ITEM'))) : limitaTexto($cursoVisualizado->getNome()) . ' > ' . texto('AREA_BIBLIOGRAFIA') . ' > ' . texto('TEXTO_EDITAR_DADO', array(texto('DADOS_ITEM'))));
							}
							else {
								adicionaMensagem(texto('MENSAGEM_ERRO_INTERNO'), 'erro');
								redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia'));
							}
						}
						else {
							//TODO VISUALIZAR UM ITEM
						}
					}
				    else {
				   		
				    	
				   		if($permissaoBibliografia->checkPermissao('Inserir',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
							$this->getSmarty()->assign('possivelInserir', true);
						}
						if($permissaoBibliografia->checkPermissao('Editar',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
							$this->getSmarty()->assign('possivelEditar', true);
						}
				    	if($permissaoBibliografia->checkPermissao('Excluir',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
							$this->getSmarty()->assign('possivelExcluir', true);
						}
						
							
						if ($localAcao == 'bibliografia') {
							if (!is_array($resultado	=	$cursoVisualizado->getBibliografias(null, null, $ordenacaoAtual, $ordemAtual)))
								redireciona(array('404'));
							
						}		
						if ($localAcao == 'modulo') {
							$associacoesModulo	=	new Associacoes($cursoVisualizado->getIdCurso(), $moduloVisualizado->getIdModulo(), 'modulos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
							$arrayAssociacoes	=	$associacoesModulo->getAssociacoes();
							$arrayIdBibliografias	=	array();
							foreach($arrayAssociacoes AS $chave => $associacoes) {
								if ($chave == 'Bibliografia') {
									foreach ($associacoes as $associacao) {
										array_push($arrayIdBibliografias, $associacao['idElemento']);
									}
								}
							}
							if (sizeof($arrayIdBibliografias) > 0) {
								if (!is_array($resultado	=	Bibliografia::buscar($arrayIdBibliografias, $cursoVisualizado->getIdCurso(), null, null, null, null, null, null, null, $ordenacaoAtual, $ordemAtual)))
									redireciona(array('404'));
							}
							else {
								$resultado	=	array('listaResultados' => array(), 'qtdResultadosTotal' => 0, 'qtdPaginas' => 0);
							}
						}
						
						if (is_array($resultado)) {
							$listaBibliografia     = $resultado['listaResultados'];
							$qtdItensBibliografia  = $resultado['qtdResultadosTotal'];
							
							//Formatando a lista de itens para os dados serem exibidos corretamente
							foreach($listaBibliografia as $chave => $bibliografia) {
								$bibliografiaTemp = $bibliografia;
								$idUsuarioUltimaModificacao = $bibliografiaTemp['idUsuarioUltimaModificacao'];
								if($resultadoUsuarioUltimaModificacao = Usuario::getUsuarioPorId($idUsuarioUltimaModificacao, null, null, null, null)) {
									$dadosUsuarioUltimaModificacao = $resultadoUsuarioUltimaModificacao['listaResultados'];
									$qtdAutor   = $resultadoUsuarioUltimaModificacao['qtdResultadosTotal'];
									
									if($qtdAutor > 0) {
										$bibliografiaTemp['usuarioUltimaModificacao'] = nomeSobrenome($dadosUsuarioUltimaModificacao[0]['nome']); 	
										$bibliografiaTemp['urlUsuarioUltimaModificacao'] = montalink(array('usuario', $dadosUsuarioUltimaModificacao[0]['idUsuario']));	
									}
									else {
										$bibliografiaTemp['usuarioUltimaModificacao'] = texto('TEXTO_AUTOR_DESCONHECIDO');	
									}					
								}
								
								//Ultima modificacao
								$bibliografiaTemp['dataHoraUltimaModificacaoFormatada']	=	texto("TEXTO_ULTIMA_MODIFICACAO_POR", array(getDataHoraFormatada($bibliografiaTemp['dataHoraUltimaModificacao']), $bibliografiaTemp['urlUsuarioUltimaModificacao'], $bibliografiaTemp['usuarioUltimaModificacao']));
								$bibliografiaTemp['editarUrl']	=	$localAcao == 'modulo' ? montaLink(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia', $bibliografiaTemp['idItem'], 'editar')) : montaLink(array('curso', $urlCurso, 'consulta', 'bibliografia', $bibliografiaTemp['idItem'], 'editar'));
								
								//Pegando e ajeitando associacoes
								$associacoesBibliografia	=	new Associacoes($cursoVisualizado->getIdCurso(), $bibliografia['idItem'], 'bibliografias', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
								$arrayAssociacoes			=	$associacoesBibliografia->getAssociacoes();
								foreach ($arrayAssociacoes as $grupoAssociacoes => $associacoesGrupo) {
									foreach ($associacoesGrupo as $chaveAssociacao => $dadosAssociacao) {
										$dadosAssociacaoTemp	=	$dadosAssociacao;
											
										$dadosAssociacaoTemp['title']	=	texto('TITLE_ASSOCIACOES', array(strip_tags($dadosAssociacao['titulo'])));
											
										$arrayAssociacoes[$grupoAssociacoes][$chaveAssociacao]	=	$dadosAssociacaoTemp;
									}
								}
								$bibliografiaTemp['arrayAssociacoes'] = $arrayAssociacoes;
								$bibliografiaTemp['nomeAbreviado'] = criaAbrev($bibliografiaTemp['titulo']);
								$listaBibliografia[$chave] = $bibliografiaTemp;
							}
							if($permissaoBibliografia->checkPermissao('Ver',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
								$this->getSmarty()->assign('listaBibliografia', $listaBibliografia);
							}
							$this->getSmarty()->assign('ordenacaoAtual', $ordenacaoAtual);
							$this->getSmarty()->assign('ordemAtual', $ordemAtual);
							
							$this->getSmarty()->assign('LISTA_TITULO_ITEM_HREF', $localAcao == 'modulo'? montaLink(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia', 'ordenaitem', $ordenacaoAtual != 'item' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))) : montaLink(array('curso', $urlCurso, 'consulta', 'bibliografia', 'ordenaitem', $ordenacaoAtual != 'item' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))));
							$this->getSmarty()->assign('LISTA_TITULO_ITEM_TITLE', $ordenacaoAtual != 'item' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_ITEM'))) : ($ordemAtual == 'desc' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_ITEM'))) : texto('TEXTO_ORDENA_DESC', array(texto('DADOS_ITEM')))));
							
							$this->getSmarty()->assign('LISTA_TITULO_DATA_INSERCAO_HREF', $localAcao == 'modulo'? montaLink(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia', 'ordenadatainsercao', $ordenacaoAtual != 'dataHoraInsercao' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))) : montalink(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia', 'ordenadatainsercao', $ordenacaoAtual != 'dataHoraInsercao' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))));
							$this->getSmarty()->assign('LISTA_TITULO_DATA_INSERCAO_TITLE', $ordenacaoAtual != 'dataHoraInsercao' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_DATA_INSERCAO'))) : ($ordemAtual == 'desc' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_DATA_INSERCAO'))) : texto('TEXTO_ORDENA_DESC', array(texto('DADOS_DATA_INSERCAO')))));
						
							$this->getSmarty()->assign('LISTA_TITULO_DATA_MODIFICACAO_HREF', $localAcao == 'modulo'? montaLink(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'bibliografia', 'ordenadatamodificacao', $ordenacaoAtual != 'dataHoraUltimaModificacao' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))) : montalink(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'bibliografia', 'ordenadatamodificacao', $ordenacaoAtual != 'dataHoraUltimaModificacao' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))));
							$this->getSmarty()->assign('LISTA_TITULO_DATA_MODIFICACAO_TITLE', $ordenacaoAtual != 'dataHoraUltimaModificacao' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_DATA_ULTIMA_MODIFICACAO'))) : ($ordemAtual == 'desc' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_DATA_ULTIMA_MODIFICACAO'))) : texto('TEXTO_ORDENA_DESC', array(texto('DADOS_DATA_ULTIMA_MODIFICACAO')))));	
							
							$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', $localAcao == 'modulo' ? array(texto('AREA_BIBLIOGRAFIA') . ' - ' .  limitaTexto($moduloVisualizado->getTitulo()) . ' - '. $cursoVisualizado->getNomeModulo() . ' - ' . limitaTexto($cursoVisualizado->getNome())) : array(texto('AREA_BIBLIOGRAFIA') . ' - ' . limitaTexto($cursoVisualizado->getNome()))));
							$this->getSmarty()->assign('TEXTO_NAVEGACAO', $localAcao == 'modulo'? limitaTexto($cursoVisualizado->getNome()) . ' > ' . $cursoVisualizado->getNomeModulo() . ' > '. limitaTexto($moduloVisualizado->getTitulo()) . ' > ' . texto('AREA_BIBLIOGRAFIA') : limitaTexto($cursoVisualizado->getNome()) . ' > ' . texto('AREA_BIBLIOGRAFIA'));
						}
						else {
							//Houve um problema na busca e ela retornou false
							adicionaMensagem(texto('MENSAGEM_ERRO_INTERNO'), 'erro');
							redireciona($_SESSION['constructore']['URLOrigem']);
						}
					}	
				}
				
				$this->exibir('bibliografia');
				if(isset($_SESSION['constructore']['inserirBibliografia'])){
					unset($_SESSION['constructore']['inserirBibliografia']);
				}
			}
		}
		else {
			//Usuario nao tem permissao para acessar a pagina
			redireciona(array('404'));
		}
	}
	else {
		redireciona(array('404'));
	}
	
?>